home *** CD-ROM | disk | FTP | other *** search
- #include "SampleErrors.h"
- #include "SampleFileIO.h"
- #include "SampleMain.h"
- #include "SamplePrint.h"
-
- #include <Memory.h>
- #include <Errors.h>
-
-
- #pragma segment Main
- /************************************************************************************
-
- CenterDrawArea
-
- *************************************************************************************/
- Point CenterDrawArea(Rect *sRect,Rect *bRect)
- {
- Point p;
-
- p.h = ( (bRect->right - bRect->left) - (sRect->right - sRect->left) ) / 2;
- p.v = ( (bRect->bottom - bRect->top) - (sRect->bottom - sRect->top) ) / 2;
-
- return p;
- }
-
-
- #pragma segment Main
- /************************************************************************************
-
- PresentStyleDialog
-
- *************************************************************************************/
- void PresentStyleDialog()
- {
- OSErr err;
- Boolean justCreated = false;
-
- if ( gPrRecHdl == nil ) { /* the style dialog hasn't been presented */
- gPrRecHdl = (THPrint)NewHandle(sizeof(TPrint));
- justCreated = true;
- }
-
- if ( gPrRecHdl ) {
- PrOpen();
- if ( !(err = PrError()) ) {
-
- if (justCreated)
- PrintDefault(gPrRecHdl);
- else
- (void) PrValidate(gPrRecHdl); /* discard result saying whether record changed */
-
- if ( !(err = PrError()) )
- PrStlDialog(gPrRecHdl);
- }
- PrClose();
- }
- }
-
-
- #pragma segment Main
- /************************************************************************************
-
- PrintFile
-
- *************************************************************************************/
- OSErr PrintFile(FSSpecPtr fileSpec)
- {
- WindowPtr window;
- OSErr err;
-
- err = OpenFile(fileSpec);
- if (!err && (window = FrontWindow())) {
- err = StartPrintingProcess(false, &(window->portRect));
- DoCloseWindow(window);
- }
- return(err);
- }
-
-
- #pragma segment Main
- /************************************************************************************
-
- StartPrintingProcess
-
- *************************************************************************************/
- OSErr StartPrintingProcess(Boolean getUserInput, Rect *MyDrawingRect)
- {
- OSErr err;
- short numberOfPages;
- TPPrPort printPort;
- Point newOrigin;
- GrafPtr oldPort;
- short i;
- TPrStatus Status;
- Boolean printit;
- Boolean justCreated = false;
-
- GetPort(&oldPort);
-
- if ( gPrRecHdl == nil ) { /* the style dialog hasn't been presented */
- gPrRecHdl = (THPrint)NewHandle(sizeof(TPrint));
- justCreated = true;
- }
- if ( !gPrRecHdl )
- err = memFullErr;
- else {
- PrOpen();
- if ( !(err = PrError()) ) {
- if (justCreated)
- PrintDefault(gPrRecHdl);
- else
- (void) PrValidate(gPrRecHdl); /* discard result saying whether record changed */
-
- if ( !(err = PrError()) ) {
- printit = (getUserInput ? PrJobDialog(gPrRecHdl) : true);
- if ( printit ) {
- numberOfPages = (**gPrRecHdl).prJob.iCopies;
- printPort = PrOpenDoc(gPrRecHdl,nil,nil);
- err = PrError();
- for (i = 1; (i <= numberOfPages) && !err; ++i) {
- PrOpenPage(printPort,nil);
-
- if ( !(err = PrError()) ) {
- newOrigin = CenterDrawArea(MyDrawingRect,&((**gPrRecHdl).prInfo.rPage));
- OffsetRect(&gStopRect,newOrigin.h,newOrigin.v);
- OffsetRect(&gGoRect,newOrigin.h,newOrigin.v);
- SetPort((GrafPtr) printPort);
- DrawWindow(FrontWindow());
- OffsetRect(MyDrawingRect,newOrigin.h,newOrigin.v);
- FrameRoundRect(MyDrawingRect,16,16);
- OffsetRect(&gStopRect,-newOrigin.h,-newOrigin.v);
- OffsetRect(&gGoRect,-newOrigin.h,-newOrigin.v);
- OffsetRect(MyDrawingRect,-newOrigin.h,-newOrigin.v);
- MoveTo(4,20);
- TextFont(0);
- GetWTitle(FrontWindow(), &gTitle);
- DrawString(gTitle);
-
- } /* if ( !(err = PrError()) ) */
-
- PrClosePage(printPort);
-
- } /* for ( i = 1; i <= numberOfPages; i++) */
-
- PrCloseDoc(printPort);
- if (!err && (**gPrRecHdl).prJob.bJDocLoop == bSpoolLoop &&
- (!( err = PrError() )) ) {
- PrPicFile(gPrRecHdl,nil,nil,nil,&Status);
- err = PrError();
- }
-
- } /* if ( printit ) */
- } /* if ( !(err = PrError()) ) */
- } /* if ( !(err = PrError()) ) */
- PrClose();
- SetPort(oldPort);
- } /* if ( gPrRecHdl ) */
- return (err);
- } /* end of function */
-